C语言数据结构实战
📚 共计 30 章节
01
数据结构概述
数据结构的概念 · 逻辑结构与物理结构 · 抽象数据类型(ADT) · 算法效率度量(时间复杂度与空间复杂度)
基础
核心概念
02
线性表之顺序表
顺序表的定义与初始化 · 插入与删除操作 · 查找与遍历 · 动态数组的实现与扩容策略
线性表
动态数组
03
线性表之单链表
单链表的节点定义 · 头插法与尾插法 · 按位查找与按值查找 · 删除节点与释放内存
链表
指针
04
线性表之双链表与循环链表
双链表的节点结构与插入删除 · 循环链表的遍历终止条件 · 约瑟夫环问题实战
双链表
循环链表
约瑟夫环
05
栈与栈的应用
栈的顺序存储与链式存储 · 入栈与出栈操作 · 括号匹配检测 · 表达式求值(中缀转后缀)
栈
表达式
06
队列与循环队列
队列的顺序存储(假溢出问题) · 循环队列的判空与判满 · 链式队列 · 舞伴配对问题
队列
循环队列
07
串的模式匹配
串的定长顺序存储 · BF暴力匹配算法 · KMP算法原理与next数组 · KMP的优化(nextval)
字符串
KMP
08
数组与广义表
数组的存储结构(行优先与列优先) · 特殊矩阵的压缩存储(对称、三角、稀疏) · 广义表的头尾链表存储
数组
广义表
压缩
09
树与二叉树基础
树的定义与基本术语 · 二叉树的五种基本形态 · 满二叉树与完全二叉树 · 顺序存储与链式存储
树
二叉树
10
二叉树的遍历
前序、中序、后序遍历的递归实现 · 层序遍历(队列实现) · 根据遍历序列重建二叉树
遍历
递归
11
线索二叉树
线索化的概念 · 中序线索二叉树的构造 · 线索二叉树的遍历 · 前序与后序线索化简介
线索
中序
12
树与森林
树的存储结构(双亲、孩子、孩子兄弟) · 森林与二叉树的转换 · 树与森林的遍历
森林
转换
13
哈夫曼树与编码
哈夫曼树的定义与构造 · 哈夫曼编码的生成 · 文件压缩与解压的简单原理
哈夫曼
压缩
14
图的基本概念
图的定义与术语(有向/无向、度、路径、连通) · 邻接矩阵存储 · 邻接表存储
图
邻接表
15
图的遍历
深度优先搜索(DFS)递归与栈实现 · 广度优先搜索(BFS)队列实现 · 连通分量判定
DFS
BFS
16
图的最小生成树
普里姆(Prim)算法 · 克鲁斯卡尔(Kruskal)算法 · 并查集在Kruskal中的应用
最小生成树
并查集
17
图的最短路径
迪杰斯特拉(Dijkstra)算法(单源) · 弗洛伊德(Floyd)算法(多源) · 路径记录与输出
最短路径
Dijkstra
18
拓扑排序与关键路径
AOV网与拓扑排序(Kahn算法) · AOE网与关键路径 · 事件与活动的最早/最晚时间
拓扑
关键路径
19
查找之顺序与折半
顺序查找(哨兵优化) · 折半查找(二分查找)递归与迭代 · 插值查找与斐波那契查找
查找
二分
20
查找之二叉排序树
二叉排序树的定义 · 查找与插入 · 删除操作(三种情况) · 查找性能分析
BST
二叉排序树
21
平衡二叉树(AVL)
AVL树的定义与平衡因子 · LL/RR/LR/RL四种旋转 · 插入后的平衡调整 · AVL树的删除简介
AVL
旋转
22
B树与B+树
B树的定义与阶 · B树的查找与插入 · B+树的结构特点 · 在数据库索引中的应用
B树
B+树
索引
23
哈希表
哈希函数构造(直接定址、除留余数) · 冲突处理(开放地址法、链地址法) · 装填因子与查找性能
哈希
冲突
24
排序之插入与希尔
直接插入排序 · 折半插入排序 · 希尔排序(增量序列的选择) · 排序的稳定性分析
插入排序
希尔
25
排序之交换排序
冒泡排序(优化) · 快速排序(枢轴选择与Partition) · 快速排序递归与非递归实现
冒泡
快速排序
26
排序之选择排序
简单选择排序 · 堆排序(堆的调整与建堆) · 堆排序的完整实现与性能分析
选择排序
堆排序
27
排序之归并与基数
2路归并排序(递归与迭代) · 归并排序的应用(外部排序) · 基数排序(LSD与MSD)
归并
基数排序
28
排序之比较与总结
各种排序算法的时空复杂度对比表 · 内排序与外排序 · 工程选型建议
总结
对比
29
文件与外部排序
文件的逻辑结构与物理结构 · 顺序文件与索引文件 · 多路归并排序与败者树
外部排序
败者树
30
综合实战:学生成绩管理系统
需求分析 · 数据结构设计(顺序表/链表) · 功能模块实现(增删改查排序) · 代码整合与测试
实战
项目